home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / IDLIncludes / AEDataModel.idl < prev    next >
Text File  |  1996-05-01  |  8KB  |  240 lines

  1. /*
  2.      File:        AEDataModel.idl
  3.  
  4.      Contains:    AppleEvent Data Model Interfaces.
  5.  
  6.      Version:    Technology:    Copland
  7.                  Release:    Universal Interfaces 3.0d3 on Copland DR1
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16.  
  17. */
  18. #ifndef __AEDATAMODEL_IDL__
  19. #define __AEDATAMODEL_IDL__
  20.  
  21. #include <somobj.idl>
  22. #include <somcls.idl>
  23.  
  24. #ifndef __TYPES_IDL__
  25. #include <Types.idl>
  26. #endif
  27. #ifndef __MEMORY_IDL__
  28. #include <Memory.idl>
  29. #endif
  30. #if FOR_SYSTEM7_AND_SYSTEM8_DEPRECATED
  31. #if !FOR_PTR_BASED_AE
  32. #ifndef __MIXEDMODE_IDL__
  33. #include <MixedMode.idl>
  34. #endif
  35. #endif
  36. #endif
  37. #if FOR_SYSTEM8_PREEMPTIVE
  38. #ifndef __MEMALLOCATORS_IDL__
  39. #include <MemAllocators.idl>
  40. #endif
  41. #endif
  42.  
  43. #ifdef __SOMIDL__
  44.  
  45. /* Keywords for Apple event attributes */
  46. /*    Constants used for specifying the factoring of AEDescLists. */
  47. /* Constants used creating an AppleEvent */
  48. /* Apple event manager data types */
  49. typedef ResType                    DescType;
  50.  
  51. typedef FourCharCode            AEKeyword;
  52.  
  53. #if FOR_PTR_BASED_AE
  54. typedef OpaquePtr                AEDescData;
  55.  
  56. typedef SOMLargeStruct            AEDesc;                        /* Derived from a struct of 8 bytes in size */
  57.  
  58. /*typedef AEDesc *            AEDescPtr;*/
  59. #else
  60. typedef SOMLargeStruct            AEDesc;                        /* Derived from a struct of 8 bytes in size */
  61.  
  62. typedef OpaquePtr                AEDescPtr;                    /* Substituted OpaquePtr for ``AEDesc*'' */
  63.  
  64. #endif
  65. typedef SOMLargeStruct            AEKeyDesc;                    /* Derived from a struct of 12 bytes in size */
  66.  
  67. /* a list of AEDesc's is a special kind of AEDesc */
  68. typedef AEDesc                    AEDescList;
  69.  
  70. /* AERecord is a list of keyworded AEDesc's */
  71. typedef AEDescList                AERecord;
  72.  
  73. /* an AEDesc which contains address data */
  74. typedef AEDesc                    AEAddressDesc;
  75.  
  76. /* an AERecord that contains an AppleEvent, and related data types */
  77. typedef AERecord                AppleEvent;
  78.  
  79. typedef OpaquePtr                AppleEventPtr;                /* Substituted OpaquePtr for ``AppleEvent*'' */
  80.  
  81. typedef SInt16                    AEReturnID;
  82.  
  83. typedef SInt32                    AETransactionID;
  84.  
  85. typedef FourCharCode            AEEventClass;
  86.  
  87. typedef FourCharCode            AEEventID;
  88.  
  89. typedef SInt8                    AEArrayType;
  90.  
  91. #if FOR_PTR_BASED_AE
  92. typedef SOMLargeStruct            AEArrayData;                /* Derived from a struct of 23 bytes in size */
  93.  
  94. #else
  95. typedef SOMLargeStruct            AEArrayData;                /* Derived from a struct of 27 bytes in size */
  96.  
  97. #endif
  98. typedef OpaquePtr                AEArrayDataPointer;            /* Substituted OpaquePtr for ``AEArrayData*'' */
  99.  
  100. /*
  101. *************************************************************************
  102.   These calls are used to set up and modify the coercion dispatch table.
  103. *************************************************************************
  104. */
  105. #if FOR_SYSTEM7_AND_SYSTEM8_DEPRECATED
  106. #if !FOR_PTR_BASED_AE
  107. typedef OpaquePtr AECoerceDescProcPtr;
  108. typedef OpaquePtr AECoerceDescUPP;
  109. typedef OpaquePtr AECoercePtrProcPtr;
  110. typedef OpaquePtr AECoercePtrUPP;
  111. typedef UniversalProcPtr        AECoercionHandlerUPP;
  112.  
  113. #endif
  114. #endif
  115. #if FOR_SYSTEM8_PREEMPTIVE
  116. #if FOR_PTR_BASED_AE
  117. typedef OpaquePtr AECoercionProc;
  118. #endif
  119. #endif
  120. /*
  121. *************************************************************************
  122.   The following calls provide for a coercion interface.
  123. *************************************************************************
  124. */
  125. #if FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE
  126. #endif
  127. /*
  128. *************************************************************************
  129.  The following calls apply to any AEDesc. Every 'result' descriptor is
  130.  created for you, so you will be responsible for memory management
  131.  (including disposing) of the descriptors so created.  
  132. *************************************************************************
  133. */
  134. #if FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE
  135. #endif
  136. #if FOR_SYSTEM8_PREEMPTIVE
  137. #if FOR_PTR_BASED_AE
  138. #endif
  139. #endif
  140. /*
  141. *************************************************************************
  142.   The following calls apply to AEDescList. Since AEDescList is a subtype of
  143.   AEDesc, the calls in the previous section can also be used for AEDescList.
  144.   All list and array indices are 1-based. If the data was greater than
  145.   maximumSize in the routines below, then actualSize will be greater than
  146.   maximumSize, but only maximumSize bytes will actually be retrieved.
  147. *************************************************************************
  148. */
  149. #if FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE
  150. #endif
  151. /*
  152. *************************************************************************
  153.  The following calls apply to AERecord. Since AERecord is a subtype of
  154.  AEDescList, the calls in the previous sections can also be used for
  155.  AERecord an AERecord can be created by using AECreateList with isRecord
  156.  set to true. 
  157. *************************************************************************
  158. */
  159. #if FOR_SYSTEM8_PREEMPTIVE
  160. #endif
  161. #if FOR_SYSTEM7_ONLY
  162. /*
  163.   Note: The following #defines map ``key'' calls on AERecords into ``param'' calls on 
  164.   AppleEvents.  Although no errors are currently returned if AERecords are 
  165.   passed to ``param'' calls and AppleEvents to ``key'' calls, the behavior of 
  166.   this type of API-mixing is not explicitly documented in Inside Macintosh.  
  167.   It just happens that the ``key'' calls have the same functionality as their 
  168.   ``param'' counterparts.  Since none of the ``key'' calls are currently available 
  169.   in the PowerPC IntefaceLib, the #defines exploit the fact that ``key'' and 
  170.   ``param'' routines can be used interchangeably, and makes sure that every 
  171.   invokation of a ``key'' API becomes an invokation of a ``param'' API.
  172. */
  173. #endif
  174. /*
  175. *************************************************************************
  176.   The following calls create and manipulate the AppleEvent data type.
  177. *************************************************************************
  178. */
  179. #if FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE
  180. #endif
  181. #if FOR_SYSTEM8_PREEMPTIVE
  182. #if FOR_PTR_BASED_AE
  183. #endif
  184. #endif
  185. /*
  186. *************************************************************************
  187.   The following calls are used to pack and unpack parameters from records
  188.   of type AppleEvent. Since AppleEvent is a subtype of AERecord, the calls
  189.   in the previous sections can also be used for variables of type
  190.   AppleEvent. The next six calls are in fact identical to the six calls
  191.   for AERecord.
  192. *************************************************************************
  193. */
  194. #if FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE
  195. #endif
  196. /*
  197. *************************************************************************
  198.  The following calls also apply to type AppleEvent. Message attributes are
  199.  far more restricted, and can only be accessed through the following 5
  200.  calls. The various list and record routines cannot be used to access the
  201.  attributes of an event. 
  202. *************************************************************************
  203. */
  204. #if FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE
  205. #endif
  206. #if FOR_SYSTEM8_PREEMPTIVE
  207. #if FOR_PTR_BASED_AE
  208. /*
  209. *************************************************************************
  210.   These calls are used to convert AEDescs into a "flattened", canonical 
  211.   form and back again.
  212. *************************************************************************
  213. */
  214. /*
  215. *************************************************************************
  216.   The following calls apply to AEStreams.  Once a AEStream has been 
  217.   fully written, it may be converted to an AEDesc, AEDescList or AERecord
  218.   to be used by the various other routines listed above.
  219. *************************************************************************
  220. */
  221. typedef OpaquePtr                AEStream;
  222.  
  223. /*
  224. *************************************************************************
  225.   The following calls apply to AESubDescs.  AESubDescs provide an efficient
  226.   way to traverse recursive AERecords and AEDescLists.
  227. *************************************************************************
  228. */
  229. typedef SOMLargeStruct            OpaqueAESubDesc;            /* Derived from a struct of 32 bytes in size */
  230.  
  231. typedef OpaqueAESubDesc            AESubDesc;
  232.  
  233. #endif
  234. #endif
  235.  
  236. #endif /* __SOMIDL__ */
  237.  
  238. #endif /* __AEDATAMODEL_IDL__ */
  239.  
  240.